﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Upeu.Matricula.Api.Models;
using Upeu.Matricula.Data.Business;
using Upeu.Matricula.Data.Entities;

namespace Upeu.Matricula.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class CursoController : ApiController
    {

        public IEnumerable<CursoModel> Get()
        {

            return CursoBusiness.GetList("").Select(
                t => new CursoModel
                {
                    CursoId = t.CursoId,
                    Nombrec = t.Nombrec,
                    Profesor = t.Profesor,
                    Horasc = t.Horasc,
                    Creditos = t.Creditos,
                    Costo_curso = t.Costo_curso,
                    Duracion_curso = t.Duracion_curso,
                    Observaciones = t.Observaciones,
                });
        }


        public CursoModel Get(Guid CursoId)
        {
            Curso t = CursoBusiness.GetById(CursoId);
            return new CursoModel
            {
                CursoId = t.CursoId,
                Nombrec = t.Nombrec,
                Profesor = t.Profesor,
                Horasc = t.Horasc,
                Creditos = t.Creditos,
                Costo_curso = t.Costo_curso,
                Duracion_curso = t.Duracion_curso,
                Observaciones = t.Observaciones,
            };
        }


        public CursoModel Post([FromBody]CursoModel model)
        {
            Curso t = CursoBusiness.Create(new Curso
            {
                Nombrec = model.Nombrec,
                Profesor = model.Profesor,
                Horasc = model.Horasc,
                Creditos = model.Creditos,
                Costo_curso = model.Costo_curso,
                Duracion_curso = model.Duracion_curso,
                Observaciones = model.Observaciones,
            });
            return new CursoModel
            {
                CursoId = t.CursoId,
                Nombrec = t.Nombrec,
                Profesor = t.Profesor,
                Horasc = t.Horasc,
                Creditos = t.Creditos,
                Costo_curso = t.Costo_curso,
                Duracion_curso = t.Duracion_curso,
                Observaciones = t.Observaciones,
            };
        }

        // PUT api/<controller>/5
        public CursoModel Put(Guid id, [FromBody]CursoModel model)
        {
            Curso t = CursoBusiness.Update(new Curso
            {
                CursoId = id,
                Nombrec = model.Nombrec,
                Profesor = model.Profesor,
                Horasc = model.Horasc,
                Creditos = model.Creditos,
                Costo_curso = model.Costo_curso,
                Duracion_curso = model.Duracion_curso,
                Observaciones = model.Observaciones,
            });
            return new CursoModel
            {
                CursoId = t.CursoId,
                Nombrec = t.Nombrec,
                Profesor = t.Profesor,
                Horasc = t.Horasc,
                Creditos = t.Creditos,
                Costo_curso = t.Costo_curso,
                Duracion_curso = t.Duracion_curso,
                Observaciones = t.Observaciones,
            };
        }


        public void Delete(Guid CursoId)
        {
            CursoBusiness.Delete(CursoId);
        }
    }
}